/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.clinicariobamba.Controladores;

import com.clinicariobamba.ReglasNegocio.Clases.Composicion;
import com.clinicariobamba.ReglasNegocio.Clases.Elemento;
import com.clinicariobamba.ReglasNegocio.Clases.ElementoEntrada;
import com.clinicariobamba.ReglasNegocio.Clases.Entrada;
import com.clinicariobamba.ReglasNegocio.Clases.HistoriaClinica;
import com.clinicariobamba.ReglasNegocio.Clases.Paciente;
import com.clinicariobamba.ReglasNegocio.Clases.ProfesionalSalud;
import com.clinicariobamba.ReglasNegocio.Clases.TipoEntrada;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesComposicion;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesElemento;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesElementoEntrada;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesEntrada;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesHistoriaClinica;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesOrganizacionDependencia;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesPaciente;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesTipoEntrada;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesXml;
import com.clinicariobamba.Util.MyUtil;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import org.primefaces.context.DefaultRequestContext;

/**
 *
 * @author Gis
 */
@ManagedBean
@SessionScoped
public class ControladorHCEPaciente {

     private HistoriaClinica hce;
    private Composicion composicion;
    private Composicion composicionSel;
    private Elemento elementoSel;

    private ArrayList<Entrada> lstEntradas;
    private ArrayList<Composicion> lstComposiciones;
    private ArrayList<Elemento> lstElementosSV;
    private ArrayList<Elemento> lstElementosMedicamentos;
    private ArrayList<Elemento> lstElementosExamenes;


    public ControladorHCEPaciente() {


    }

    public Composicion getComposicionSel() {
        return composicionSel;
    }

    public void setComposicionSel(Composicion composicionSel) {
        this.composicionSel = composicionSel;
    }

    public HistoriaClinica getHce() {
        return hce;
    }

    public void setHce(HistoriaClinica hce) {
        this.hce = hce;
    }

    public ArrayList<ElementoEntrada> getLstElementoEntrada(int id_entrada) {
        return FuncionesElementoEntrada.obtenerElementoEntrada(id_entrada);
    }


    public ElementoEntrada obtenerElementoEntrada(int id) {
        return getLstElementoEntrada(id).get(1);
    }

    public Elemento getElementoSel() {
        return elementoSel;
    }

    public void setElementoSel(Elemento elementoSel) {
        this.elementoSel = elementoSel;
    }

    public ArrayList<Entrada> getLstEntradas() {
        return lstEntradas;
    }

    public Composicion getComposicion() {
        return composicion;
    }

    public void setComposicion(Composicion composicion) {
        this.composicion = composicion;
    }

    public void setLstEntradas(ArrayList<Entrada> lstEntradas) {
        this.lstEntradas = lstEntradas;
    }

    public ArrayList<Elemento> getLstElementosSV() {
        return lstElementosSV;
    }

    public void setLstElementosSV(ArrayList<Elemento> lstElementosSV) {
        this.lstElementosSV = lstElementosSV;
    }

    public ArrayList<Elemento> getLstElementosMedicamentos() {
        return lstElementosMedicamentos;
    }

    public void setLstElementosMedicamentos(ArrayList<Elemento> lstElementosMedicamentos) {
        this.lstElementosMedicamentos = lstElementosMedicamentos;
    }

    public ArrayList<Elemento> getLstElementosExamenes() {
        return lstElementosExamenes;
    }

    public void setLstElementosExamenes(ArrayList<Elemento> lstElementosExamenes) {
        this.lstElementosExamenes = lstElementosExamenes;
    }

    public HistoriaClinica ObtenerHCE(int id_paciente) {
        return FuncionesHistoriaClinica.obtenerHistoriaClinica(id_paciente);
    }

    public ArrayList<Entrada> getLstEntradasComp(int id) {
        return FuncionesEntrada.obtenerEntradas(id);
    }

    public ArrayList<Entrada> getLstEntradasXML(Composicion comp) {

        ArrayList<Entrada> lst = new ArrayList<Entrada>();
        for (Entrada e : comp.getLstentrada()) {
            lst.add(e);
        }
        return lst;
    }

    public ArrayList<Composicion> getLstComposiciones() {
        return lstComposiciones;
    }

    public void setLstComposiciones(ArrayList<Composicion> lstComposiciones) {
        this.lstComposiciones = lstComposiciones;
    }


    public void ObtenerHCEXML() {
        try {
            HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
            Paciente pac = (Paciente) session.getAttribute("user");
            this.lstComposiciones = FuncionesXml.LeerXMLF(pac.getCi());
            this.hce = new HistoriaClinica(lstComposiciones.get(0).getHistoriaClinica().getIdHc(), FuncionesXml.LeerXMLHCE(pac.getCi()).getPaciente());
            FacesContext.getCurrentInstance().getExternalContext().redirect(
                    FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath()
                    + "/faces/Paciente/HCE_Paciente.xhtml");

        } catch (Exception e) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Alerta!!", e.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

    
}
